# Copyright 2017 Google Inc.
#
# Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This class is auto generated by the swagger code generator program.
# https://github.com/swagger-api/swagger-codegen.git
# Do not edit the class manually.

defmodule GoogleApi.Partners.V2.Model.Company do
  @moduledoc """
  A company resource in the Google Partners API. Once certified, it qualifies for being searched by advertisers.

  ## Attributes

  - additionalWebsites ([String.t]): URL of the company&#39;s additional websites used to verify the dynamic badges. These are stored as full URLs as entered by the user, but only the TLD will be used for the actual verification. Defaults to: `null`.
  - autoApprovalEmailDomains ([String.t]): Email domains that allow users with a matching email address to get auto-approved for associating with this company. Defaults to: `null`.
  - badgeAuthorityInAwn (boolean()): Whether the company&#39;s badge authority is in AWN Defaults to: `null`.
  - badgeTier (String.t): Partner badge tier Defaults to: `null`.
    - Enum - one of [BADGE_TIER_NONE, BADGE_TIER_REGULAR, BADGE_TIER_PREMIER]
  - certificationStatuses ([CertificationStatus]): The list of Google Partners certification statuses for the company. Defaults to: `null`.
  - companyTypes ([String.t]): Company type labels listed on the company&#39;s profile. Defaults to: `null`.
    - Enum - one of 
  - convertedMinMonthlyBudget (Money): The minimum monthly budget that the company accepts for partner business, converted to the requested currency code. Defaults to: `null`.
  - id (String.t): The ID of the company. Defaults to: `null`.
  - industries ([String.t]): Industries the company can help with. Defaults to: `null`.
    - Enum - one of 
  - localizedInfos ([LocalizedCompanyInfo]): The list of localized info for the company. Defaults to: `null`.
  - locations ([Location]): The list of all company locations. If set, must include the primary_location in the list. Defaults to: `null`.
  - name (String.t): The name of the company. Defaults to: `null`.
  - originalMinMonthlyBudget (Money): The unconverted minimum monthly budget that the company accepts for partner business. Defaults to: `null`.
  - primaryAdwordsManagerAccountId (String.t): The Primary AdWords Manager Account id. Defaults to: `null`.
  - primaryLanguageCode (String.t): The primary language code of the company, as defined by &lt;a href&#x3D;\&quot;https://tools.ietf.org/html/bcp47\&quot;&gt;BCP 47&lt;/a&gt; (IETF BCP 47, \&quot;Tags for Identifying Languages\&quot;). Defaults to: `null`.
  - primaryLocation (Location): The primary location of the company. Defaults to: `null`.
  - profileStatus (String.t): The public viewability status of the company&#39;s profile. Defaults to: `null`.
    - Enum - one of [COMPANY_PROFILE_STATUS_UNSPECIFIED, HIDDEN, PUBLISHED, SEARCHABLE]
  - publicProfile (PublicProfile): Basic information from the company&#39;s public profile. Defaults to: `null`.
  - ranks ([Rank]): Information related to the ranking of the company within the list of companies. Defaults to: `null`.
  - services ([String.t]): Services the company can help with. Defaults to: `null`.
    - Enum - one of 
  - specializationStatus ([SpecializationStatus]): The list of Google Partners specialization statuses for the company. Defaults to: `null`.
  - websiteUrl (String.t): URL of the company&#39;s website. Defaults to: `null`.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :additionalWebsites => list(any()),
          :autoApprovalEmailDomains => list(any()),
          :badgeAuthorityInAwn => any(),
          :badgeTier => any(),
          :certificationStatuses => list(GoogleApi.Partners.V2.Model.CertificationStatus.t()),
          :companyTypes => list(any()),
          :convertedMinMonthlyBudget => GoogleApi.Partners.V2.Model.Money.t(),
          :id => any(),
          :industries => list(any()),
          :localizedInfos => list(GoogleApi.Partners.V2.Model.LocalizedCompanyInfo.t()),
          :locations => list(GoogleApi.Partners.V2.Model.Location.t()),
          :name => any(),
          :originalMinMonthlyBudget => GoogleApi.Partners.V2.Model.Money.t(),
          :primaryAdwordsManagerAccountId => any(),
          :primaryLanguageCode => any(),
          :primaryLocation => GoogleApi.Partners.V2.Model.Location.t(),
          :profileStatus => any(),
          :publicProfile => GoogleApi.Partners.V2.Model.PublicProfile.t(),
          :ranks => list(GoogleApi.Partners.V2.Model.Rank.t()),
          :services => list(any()),
          :specializationStatus => list(GoogleApi.Partners.V2.Model.SpecializationStatus.t()),
          :websiteUrl => any()
        }

  field(:additionalWebsites, type: :list)
  field(:autoApprovalEmailDomains, type: :list)
  field(:badgeAuthorityInAwn)
  field(:badgeTier)
  field(:certificationStatuses, as: GoogleApi.Partners.V2.Model.CertificationStatus, type: :list)
  field(:companyTypes, type: :list)
  field(:convertedMinMonthlyBudget, as: GoogleApi.Partners.V2.Model.Money)
  field(:id)
  field(:industries, type: :list)
  field(:localizedInfos, as: GoogleApi.Partners.V2.Model.LocalizedCompanyInfo, type: :list)
  field(:locations, as: GoogleApi.Partners.V2.Model.Location, type: :list)
  field(:name)
  field(:originalMinMonthlyBudget, as: GoogleApi.Partners.V2.Model.Money)
  field(:primaryAdwordsManagerAccountId)
  field(:primaryLanguageCode)
  field(:primaryLocation, as: GoogleApi.Partners.V2.Model.Location)
  field(:profileStatus)
  field(:publicProfile, as: GoogleApi.Partners.V2.Model.PublicProfile)
  field(:ranks, as: GoogleApi.Partners.V2.Model.Rank, type: :list)
  field(:services, type: :list)
  field(:specializationStatus, as: GoogleApi.Partners.V2.Model.SpecializationStatus, type: :list)
  field(:websiteUrl)
end

defimpl Poison.Decoder, for: GoogleApi.Partners.V2.Model.Company do
  def decode(value, options) do
    GoogleApi.Partners.V2.Model.Company.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.Partners.V2.Model.Company do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
